約 5,289,769 件
https://w.atwiki.jp/easybotter_wiki/pages/25.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。 ランダムPOSTを●分おき、リプライを▲分おきにしたい! [#ra5d511d]リプライ [#c8e65725] ランダムPOST [#nd87a60d] 時間別にリプライorPOSTを分けたい! [#b7bf333f] 落とし穴に注意 [#rf62e452] 落とし穴に注意2…CRONと設置サーバーの時間がズレているズレを知る ズレに対処する 指定した時間に実行の処理が終わらない 脱初心者してから考える事動作テストにも使える代入演算子 落とし穴に注意3…演算子「%」の理解演算子「%」とは? 演算子「%」の有効活用 コメント [#n0b1997d] ランダムPOSTを●分おき、リプライを▲分おきにしたい! [#ra5d511d] ここではランダムPOSTを30分おき、リプライを2分おきで考えます(※cronは2分間隔設定にする。) リプライ [#c8e65725] リプライ間隔はcronの間隔と同じなので、何か条件付けるということはしなくてOKです。 bot.phpに $response = $eb- reply(2,"data.txt","reply_pattern.php"); を追加してあげましょう。 ランダムPOST [#nd87a60d] bot.php内でも解説されている通り //bot.phpを実行したときに、0分、15分、30分、45分だったら実行される if(date("i") % 15 == 0){ $response = $eb- postRandom("data.txt"); } を使っていきます。 date("i")と言うのは、現在の時刻・○時△分の△部分を表します。 ほかにもdate("G")やdate("Y")等色々な現在時刻を表すものがあります。 詳しくは各自ここで調べて下さい。(外部リンク:http //www.php.net/manual/ja/function.date.php) % 15 == 0と言うのは、事前のdate("i")が15で割り切れることを意味します。 ここはifなので、bot.phpへアクセスした時、15で割り切れる時間(分)のみ{}の中身を実行します。 bot.phpへアクセスした時の時間が0分(60分)と15分、30分、45分だった時、いずれも15で割り切ることが出来ますね。 では今回は30分おきに設定したかったので if(date("i") % 30 == 0){ $response = $eb- postRandom("data.txt"); } と書いてみます。こうすると0(60)分と30分の時のみ実行されます。1時間に2回実行させることになります。 目的達成です! ここで注意したいのは、リプライの記述をif{}内に入れないことです。 リプライの記述まで{}へ入れてしまっては、リプライまで30分おきになってしまいます。 時間別にリプライorPOSTを分けたい! [#b7bf333f] 上の「ランダムPOSTを●分おき、リプライを▲分おきにしたい!」でdate("i")が現在の時刻○時△分の△部分だというのは分かりました。 今回は朝(6~10時)morning.txtと昼(11~15時)noon.txt、夜(16~0時)evening.txt、深夜(1~5時)night.txtそれぞれ別のPOSTをさせてみましょう。 ただし今回は△分ではなく○時なので、date("i")は使えません。○時はdate("G")を使用します。 24時間表記ですが、24という数値はありません。24時は0時扱いになります。 まずは朝の部分。現在の時刻・○時の○部分が6~10の時。 if(date("G") 5 date("G") 11){ $response = $eb- postRandom("morning.txt"); } これは「もし、現在時刻が5時より大きく、11よりも小さい時」と言うifの条件式になります。 「 」は「and」でも構いません。英字の通り「かつ」と言う意味があります。 注意したいのは不等号!これは算数レベルで考えてください。 例 全角 説明 A 5 A>5 Aは5より大きい。つまり6~23。 A 5 A<5 Aは5より小さい。つまり0~4。 A =5 A≧5 Aは5以上。つまり5~23。 A =5 A≦5 Aは5以下。つまり0~5。 次に昼の部分。現在の時刻・○時の○部分が11~15の時。 if(date("G") 10 date("G") 16){ $response = $eb- postRandom("noon.txt"); } でも良いのですが… if(date("G") 5 date("G") 11){ $response = $eb- postRandom("morning.txt"); }else if(date("G") 10 date("G") 16){ $response = $eb- postRandom("noon.txt"); } とelseを付けて朝の部分とくっ付けてあげるとすっきりします。 elseは、先のif条件(朝)に合わなかった場合else以降を実行しようとします。 次に夜の部分。現在の時刻・○時の○部分が16~24の時。 if(date("G") 15 date("G") 1){ $response = $eb- postRandom("evening.txt"); } ここまで来ると、やってしまいがちですが…これは大きな間違い!!! これでは「15より大きくて、1より小さい」というありえない条件になってしまいます。 if(date("G") 15 || date("G") 1){ $response = $eb- postRandom("evening.txt"); } としてやることで「現在時刻が15より大きい、または1より小さい場合」となります。 「||」は「or」でも構いません。英字の通り「または」と言う意味があります。 if(date("G") 5 date("G") 11){ $response = $eb- postRandom("morning.txt"); } else if(date("G") 10 date("G") 16){ $response = $eb- postRandom("noon.txt"); } else if(date("G") 15 || date("G") 1){ $response = $eb- postRandom("evening.txt"); } 繋げるとこんな感じです。 次に深夜の部分。現在の時刻・○時の○部分が1~5の時。 if(date("G") 0 date("G") 6){ $response = $eb- postRandom("night.txt"); } としてあげてもいいのですが…今まで6~10,11~15,16~24時までは指定してきました。 残りの時間はこの1~5時しかないので、わざわざ条件を書いてやることはないのです。 if(date("G") 5 date("G") 11){ $response = $eb- postRandom("morning.txt"); } else if(date("G") 10 date("G") 16){ $response = $eb- postRandom("noon.txt"); } else if(date("G") 15 || date("G") 1){ $response = $eb- postRandom("evening.txt"); } else { $response = $eb- postRandom("night.txt"); } で完成です! リプライも同様に条件付けてあげることで、時間別パターン可能です。 落とし穴に注意 [#rf62e452] if(date("i") % 30 === 0){ はdate("i")が30で割り切れる分数、というのを解説しました。 これを30分おき等、分数ではなく1時間毎にしたい。 if(date("G") % 1 === 0){ と書く人をよく質問スレで見かけます。 これは大きな間違いです。 詳しく書くと……… if(date("i") % 30 === 0){ は0,30分に動くことになりますね。 ここでもしcronが2分毎ではなく10秒毎にアクセスするとしたら。 毎時0分(30分)の0秒、10秒、20秒、30秒、40秒、50秒すべての秒数で作動してしまうのです。 これは、cronが分数おきだからこそ使える書き方なのです。 if(date("G") % 1 === 0){ と書いてしまうと、cronが2分毎だった場合、毎時の0,2,4,6,,,,,,,,,,,,58分と2分毎に作動してしまいます。 0分きっちりに作動させたいなら、難しく考えず if(date("i") == "0"){ としてしまえばオッケーです。 落とし穴に注意2…CRONと設置サーバーの時間がズレている 掲示板でも多い質問の一つに「リプライは動いてるけど時間分け指定をしたら通常ポストしなくなった」というものがあります。 特に見られる理由は下記3点です。 1:if・switchなどの内容が間違っている ……慣れた人でも凡ミスをすることがあるので一つずつ再確認しましょう 2:CRONがbot.phpにアクセスする時間外を指定している ……「CRONは2分毎なのにbot.phpでは3分毎の設定」などちぐはぐでは?指定時間を揃えましょう 3:CRONと設置サーバーの時間がズレている ……どのくらいのズレがあるのか確認して適切に処置しましょう ここでは3番の対処を説明します。 ズレを知る CRONと設置サーバーの時間のズレを確認するための下準備をします。 (data.txtやbot.phpの内容を既に変更している場合は適宜ファイル名を変更して対応してください) data.txtの内容(この1行のみ) {hour}時{minute}分{second}秒 bot.phpの実行内容(下記以外のリプライ・TL反応・ポスト・フォロー返し等はコメントアウトする) $response = $eb- postRandom("data.txt"); CRONの設定 5分毎、10分毎など、CRON提供側で許容されている範囲内で設定します。 1分毎・2分毎での設定はズレを計るのに向きません、できれば0分・5分・10分…という0分始まりの5分毎をオススメします。 ここまでが下準備です。 実際にCRONを起動させ、「●時●分●秒」というポストが数回行われるまで待ちます。 文字化けするようであれば文字コード・改行コードを確認、ポストが行われないようであれば指定したbot.phpが正しいURLか確認します。 0分始まりの5分毎の場合、「分」は0もしくは5の倍数でなければなりませんが、これ以外の場合にはズレが生じていることになります。 また、「分」が0もしくは5の倍数であっても「秒」が59秒……など数秒のラグで「分」が変わってしまうような値では不安が残ります。 何分のズレなのか、ズレが生じるのはどの程度の頻度か、等をチェックしたら次の段階です。 ズレに対処する 一番簡単なのはCRONの実行時間をずらして、サーバーの実行時間に合わせてやることです。 しかしこの方法では更にズレが生じたり、時間ズレと関係なくサーバーが不安定で実行に時間がかかった場合などに対処しきれません。 そこでbot.phpの時間指定を厳密なものではなく余裕をもった書き方に変えます。 毎時0分にランダムポストしたい場合は下記のように書きますが、 if(date("i") == 0){ $response = $eb- postRandom("data.txt"); } ズレが生じている場合は下記のように余裕をもった時間指定に書き換えます。 //以下は毎時0分~1分の間に実行(2分未満の範囲で遅い場合) if(date("i") = 1){ $response = $eb- postRandom("data.txt"); } //以下は毎時59分か0分に実行(2分未満の範囲で早い場合) if(date("i") == 0 || date("i") == 59){ $response = $eb- postRandom("data.txt"); } このように余裕をもたせることで多くの場合は解決します。 しかし、bot.phpの実行内容を増やしていくと、時には「CRONと設置サーバーにズレがないのに実行されてない?」という事があります。 これについても過去に同様の事例が多くありましたが、多くは下記3つに当てはまります。 1:処理落ち・タイムアウト……設置サーバーの能力を越えているかtwitterが重い場合など 2:ifやswitchの書き方の問題……閉じ忘れや勘違いがないか再確認 3:実行中に指定した時間を過ぎてしまった……bot.phpの書き方や改造で対応 次の項目では3番に当てはまる事例への対処を説明します。 指定した時間に実行の処理が終わらない EasyBotterに慣れてくると、単純な機能だけでなく様々な機能を時間別で組み合わせて実行することも多くなります。 一回に処理する機能が増えれば処理時間は長くなります。 また初期は気にならない処理時間でも、フォロー・フォロワーの増加などで処理時間が長くなることもあります。 まずはbot.phpで指定できる機能がどのような動きをしているかを考えてみましょう。 設置サーバー内の処理だけで済む ・ランダムポスト ・ローテーションポスト ……設置サーバー内のファイルからデータから選んでtwitterに送る twitterから情報を呼び出さなければならないもの ・リプライ ・タイムライン反応 ・自動フォロー返し ……初めにtwitterから情報を呼び出し、その内容を設置サーバー内のファイルと照らし合わせて処理を行い、その結果をtwitterに送る。 twitterが重い場合は呼び出し時点で処理時間を食う。 またリプライ数・タイムラインの速度やフォロワー数などで処理時間が大きく変わる。 上記を踏まえて下記のようなbot.phpを見てみましょう。 //毎回リプライ返し $response = $eb- reply(2,"data.txt","reply_pattern.php"); //毎時0分にランダムポスト if(date("i") == 0){ $response = $eb- postRandom("data.txt"); } この書き方に全く問題はありません、CRONと設置サーバーの時間ズレがなければうまく動くことでしょう。 しかし、時間ズレはないのに定期ポストが不安定になることも予想される書き方でもあります。 その理由は「プログラムの常識」にあります。 プログラムは上から順に実行されていきます。 つまり毎時0分には、「リプライ返しを全て終えてからランダムポストをする」という順番になります。 「リプライ返し」は先に説明した通り「ランダムポスト」よりtwitterと情報をやり取りする回数が多く、twitterの重さや送られてくるリプライの量によって処理にかかる時間が左右されやすいものです。 つまりCRONが0分ちょうどにbot.phpを叩いたとしても、「リプライ返し」の処理に時間がかかり過ぎてしまい「ランダムポスト」の処理にとりかかった時点で0分を過ぎている、という事態が予想できるのです。 つまり //毎時0分にランダムポスト if(date("i") == 0){ $response = $eb- postRandom("data.txt"); } //毎回リプライ返し $response = $eb- reply(2,"data.txt","reply_pattern.php"); このような書き方にすると、ランダムポストから処理が始まるので、CRONが定刻通りであれば順当に処理が行われるのです。 ただし、レンタルサーバーによっては「●秒以上実行し続けているプログラムは処理途中であっても終了させる」という機能や規約が設定されている場合もあります。 また、処理量がサーバーの処理能力を越えてしまうとダウンする可能性もあります。 このような場合にはプログラム自体を軽くしたり、処理を分散させる努力、またはサーバーを変更する必要が求められます。 脱初心者してから考える事 ifやswitchでの時間わけ設定が増えてくるとどうしても処理時間が長くなりがちです。 脱初心者したら処理の効率化ができるよう、bot.phpの書き方を工夫してみましょう。 脱初心者したばかりの方にとって最も簡単で有効な処理の効率化は「date関数の呼び出し回数を減らす」ことです。 date関数は時間を呼び出すdate("G")やdate("i")だけでなく、月を呼び出すdate("n")、日にちを呼び出すdate("j")など様々なものがあります。 年月日・曜日・時間などを多用することで様々な指定ができる代わりに、逐一date関数の内容をサーバーに問い合わせ呼び出す動作が増えてしまうので処理速度が低下します。 また、bot.phpの記述内容が増えるに従って一番下の方に書かれたものが時間外になってしまう可能性も高くなります。 そこで、処理を指定する前に時間をEasyBotterに記憶させて処理速度を上げてみましょう。 //date("i")を$minuteに代入する $minute = date("i"); //毎回リプライ返し $response = $eb- reply(2,"data.txt","reply_pattern.php"); //毎時0分にランダムポスト if($minute == 0){ $response = $eb- postRandom("data.txt"); } 代入演算子「=」は、 「A = B」の時「BをAに代入する」 という意味を持ちます。 比較演算子である「==」「===」とはまったく異なるので注意が必要です。 この場合date("i")、つまり分を$minuteという関数に代入しています。 同様の方法でdate関数は全て代入することができます、$minute・$hour・$monthなどのように重複しない範囲で関数の名前をつけることができます。 date関数を他の処理より先に関数へ代入することで、CRONがbot.phpを叩いた時刻や日付等をその処理が終わるまでの間記憶してくれます。 つまり、先に時間がかかる処理をした後や大量のifやswitchを経た最下部の処理でも、「CRONがbot.phpを叩いた時点」の時刻として処理を進めることが可能となるのです。 動作テストにも使える代入演算子 上記で説明した代入演算子を利用することで、「12月31日限定で動くか」というようなテストもできます。 $month = date("n"); $day = date("j"); 本来は上記のようにdate関数を代入しますが、 $month = 12; $day = 31; このように、ダイレクトな値を代入することで仮想の12月31日の状況にすることができますし、違う値を入れれば「12月31日以外では動かないか」のテストもできます。 いずれの場合も初心者のうちに手を出すべきものではありません、ある程度EasyBotterの挙動そしてPHPに慣れた上ですべきことですが、これらを理解しこなせるようになれば中級者の仲間入りの第一歩です。 落とし穴に注意3…演算子「%」の理解 さて、これまでの内容を理解したら構文の中身をもう少し分解してみましょう。 if(date("i") % 15 == 0){ $response = $eb- postRandom("data.txt"); } これまで上記について「15分ごとにランダムポストを実行」と書いていましたが、実際は若干異なり、正確には「0分・15分・30分・45分にランダムポストを実行」となります。 なぜでしょうか、……それは演算子「%」を正しく理解することによって解明できます。 if(date("i") % 15 == 5){ $response = $eb- postRandom("data.txt"); } このように書いても「15分ごとにランダムポストを実行」しますが、「0分・15分・30分・45分にランダムポストを実行」はされません。 なぜでしょうか、……これこそが演算子「%」を使いこなすポイントです。 演算子「%」とは? 演算子「%」はただの割り算ではなく剰余なのです。 剰余と聞くと耳慣れないかもしれませんが、算数的な言い換えをすると「割り算をした時の余り」を求める場合に使う演算子です。 つまり if(date("i") % 15 == 5){ 上記は「分を15で割って余りが5の時」という意味で、「5分・20分・35分・50分の時」という指定となります。 演算子「%」の有効活用 演算子「%」を正しく理解することで活用方法が増えます。 奇数・偶数の振り分けは一々指定しなくても、「% 2」の値が0か1か、という考え方で簡単になります。 //偶数時は、0分始まりで15分ごとに、guusuu.txtからランダムポスト if(date("G") % 2 == 0 date("i") % 15 == 0){ $response = $eb- postRandom("guusuu.txt"); } //奇数時は、5分始まりで10分ごとに、kisuu.txtからランダムポスト else if(date("G") % 2 == 1 date("i") %10 == 5){ $response = $eb- postRandom("kisuu.txt"); } CRONと設置サーバーで時間にズレがある場合でも if(date("i") % 15 == 5 || date("i") % 15 == 6){ このようにすることで「5分・6分・20分・21分・35分・36分・50分・51分」と余裕をもたせた指定にすることができます。 コメント [#n0b1997d] 時間別にリプライorPOSTと同じような感じで、時間別にPOSTしないようにしたいです。何方かよろしくお願いします。 -- 沢谷 (2010-07-26 02 19 00) 沢谷さん>その場合、時間別POSTの応用で$response = $eb- postRandom("");とすればPOSTしません -- 通りすがりのねこ (2010-08-01 21 09 11) もし、if(date("i") == "0"){を使う場合、cronの実行間隔は1分にしなければなりませんか? -- 名無しさん (2010-09-07 16 56 00) もし、if(date("i") == "0"){を使う場合、cronの実行間隔は1分にしなければなりませんか? 回答:その必要はありません -- 通りすがりのねこ (2010-09-09 21 15 34) 時間別POSTを15分おきにしたい場合、例えば時間別は6~10時のみの設定のを15分おき実行だと、if(date("G") 5 date("G") 11 date("i") % 30 === 0) で良いのでしょうか? -- たに (2010-09-19 01 21 04) 夜だけ違うリプライ。bot.php(2) http //livbot.sblo.jp/ の記事が参考になりました。サンプルコード書いてあります。 -- 2時間おきに作動させたい場合 (2010-12-10 05 27 08) 何回かの間隔で、実行したい場合は、カウンターファイルを作る手もあるぞ。パーミッションは666のこと。bot.phpの例で10回間隔で順次投稿したい場合。1間隔1分だと10分間隔です。 function seqnum(){ $iseq = 0; $fname = "count.dat"; $iseq = file_get_contents($fname); if ($iseq = 60) { $iseq = 0; } $iseq = $iseq + 1; file_put_contents($fname,(string)$iseq); //SEQカウンター書き込み echo "参照シーケンス番号 = ".$iseq." br / "; return $iseq; }$iseq = seqnum(); if (($iseq % 10) == 0) { $response = $eb- postRotation("data.txt"); } - koziki_bot (2011-01-28 10 08 59) リプを2分置き、呟きを15分置きにしたかったので「if(date("i") % 15 == 0){ $response = $eb- postRandom("data.txt"); }」と「$response = $eb- reply(2,"data.txt","reply_pattern.php");」を書き込んだのですが上手く動きません。ちなみに「$response = $eb- reply(2,"data.txt","reply_pattern.php");」だけですと正常に動くようです。初心者ながら色々調べてみましたが解決できませんのでもしよければ教えてください。 -- 千紘 (2011-02-20 20 44 36) 千紘さん> cron部分の詳細がないのでわからないですがcronが2分おきなら15分にはcronは起動しないのは分かる? -- 名無しさん (2011-02-20 21 38 41) ランダムPOSTを●分おき~と時間や曜日別にツイートを分ける方法を個別には理解できたのですが、組み合わせ方がわかりません・・・。●曜日の●時から●時まで、●分ごとにツイート(リプライ)という風にしたいのですが・・・何方かよろしくお願いします。 -- 番 (2011-02-21 00 39 31) そーでした、PHPのファイルを時間ごとに自動的に叩くアプリを使っているのでcronは使ってないです。このアプリは自分で作ったのですがどうしようかなあ??興味ある方、ツイッターで質問してみてください。scネームはハンドル名と同じです。 -- koziki_bot (2011-02-21 00 49 39) 回答ありがとうございます。理解しました!2分に合わせたいなら10分置き、15分に合わせたいなら3分置きにするなどどちらでも割れるような値にしなくてはならないということですね。 -- 千紘 (2011-02-21 07 58 19) すみません。曜日と時間で分けて30分ごとにツイートさせたいのですが、 -- 番 (2011-03-08 22 45 13) 途中で切れてしまいましたすみません・・・。曜日と時間で分けて30分ごとにツイートさせるには if(date("i") % 30 === 0){ で30分ごとにツイートするように指定して、switch(true)で case (date("w") == "1″ date("G") "6″ date("w") == "1" date("G") "12") としても出来ないでしょうか? すみませんとても困ってます・・・よろしくお願いします。 -- 番 (2011-03-08 22 52 52) bot.phpはいじってないのですが、2分置きどころかリプライを返してくれません…どうすれば良いのでしょうか? -- 翔 (2011-06-01 22 45 03) bot.phpはそのままで、リプはreply_patternから返すようにしているのに、なぜかdate.txtの言葉から拾って返してしまいます。対処方法を教えて下さい…。 -- 名無しさん (2011-06-02 02 29 36) @pagesかな?Twitterが重いか@pagesの鯖が重かったり障害があるときになるよ。これは@pagesが正常になるのを待つしか無いね -- 名無しさん (2011-07-18 20 26 51) 30分とか割り切れる話をするだけで、40分や90分間隔などの場合を書かないあたり不十分なwikiだなと感じる -- 名無しさん (2011-10-29 13 11 12) ↑40分や90分なら応用でいくらでもやりようがあるし、普通はcronでどうとでもなる。返信が返せないじゃないかならファイルを分ければいいだけのこと -- 名無しさん (2011-11-14 00 53 22) まあ40分は確かにめんどいかもねー。前回のツイート時刻を取得できればちょっと楽かもしれないけど。 -- 名無しさん (2012-04-21 17 59 52) 時間別リプライをしようと思い、「リプライも同様に条件付けてあげることで、時間別パターン可能です」とあるので時間別ランダムポストと同様にこのように時間分けをしたのですがどうも上手く動いてくれません【if( date("G") =1 date("G") = 6 ){$response = $eb- reply(3,"","reply_pattern_night.php");} else{$response = $eb- reply(3,"","reply_pattern.php");}】(ランダムポストは時間分けに成功してます)。ほんとうにこれで動くのでしょうか? -- むー (2012-05-20 05 07 43) ↑bot.phpの記述の順序を入れ替えたら成功しました、お騒がせしてすみません -- むー (2012-05-28 01 05 28) 何時~何時、何曜日~何曜日とpostさせないようにしたいのですが上手く行きません。randompostの上にいかの構文を付け足しました。 "if(date("G") 15 || date("G") 1){ $response = $eb- postRandom("data.txt");" -- PON (2013-06-24 20 01 19) 時間別のリプですが、たとえば6時30分に0630.txtを呟かせたい場合は、 if(date("G I") 6,29 date("G I") 6,31){ $response = $eb- postRandom("0630.txt"); とすればいいのでしょうか? -- MOG (2013-09-22 15 56 03) 名前 コメント
https://w.atwiki.jp/easybotter_wiki/pages/28.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。 ○月○日だけ違うファイルを読み込ませ、ランダムPOSTさせたい [#mc37f673]○月○日から△日までだけ違うファイルを読み込まる。 [#sabc59c4] ランダムPOSTで複数のファイルからランダムに発言させたい [#taae1569]人格名をフッターに追加したい場合 [#t7fb77c2] ランダムPOSTで発言を重複させない様にする [#j9bda5e7] コメント [#u24d7adf] ○月○日だけ違うファイルを読み込ませ、ランダムPOSTさせたい [#mc37f673] bot.php内 $response = $eb- postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを switch(date("m.d")){ case "06.01" $postfile = "specialdata.txt"; break; default $postfile = "data.txt"; } $response = $eb- postRandom($postfile);//ランダムPOST とすることで6月1日のみspecialdata.txt内の一行をランダムPOSTします。 ○月○日から△日までだけ違うファイルを読み込まる。 [#sabc59c4] bot.php内 $response = $eb- postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを switch(true){ case (date("m") == 6 date("i") 9 date("i") 16) $postfile = "specialdata.txt"; break; default $postfile = "data.txt"; } $response = $eb- postRandom($postfile);//ランダムPOST とすることで6月10日から15日の間のみspecialdata.txt内の一行をランダムPOSTします。 ランダムPOSTで複数のファイルからランダムに発言させたい [#taae1569] bot.php内 $response = $eb- postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを $randfile = array("one.txt","two.txt");//ランダムPOST-ファイル名 $response = $eb- postRandom($randfile[array_rand($randfile)]);//ランダムPOST とすることでone.txtかtwo.txtをランダムに選び、更にtxt内の一行をランダムにPOSTします。 人格を分けて発言させたい場合、one.txtに1人格目・two.txtに2人格目のセリフを入れましょう。 人格名をフッターに追加したい場合 [#t7fb77c2] EasyBotter.php内 //ランダムにポスト function postRandom($datafile = "data.txt"){ (略) //idなどの変換 if(preg_match("@{.+?}@",$status) == 1){ $status = $this- convertText($status); } とある部分を探して下さい。これの直後に //■■人格名フッター追加■■ switch($datafile){ case "one.txt" $reply_pattern_name = " ▲▲▲"; $status .= $reply_pattern_name; break; case "two.txt" $reply_pattern_name = " ●●●"; $status .= $reply_pattern_name; break; } を追記する。 こうすることで例えばone.txt内の「あいうえお」と言うセリフをランダムPOSTする時、「あいうえお ▲▲▲」と言った形で発言します。 ランダムPOSTで発言を重複させない様にする [#j9bda5e7] ソースは Twitter Bot BBS http //jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259840844/5-6 EasyBotter.php内の //発言を作る function makeTweet($file, $number = FALSE){ の直前に //■■ランダムPOST・重複チェック■■ function rento_check($file){ if(empty($this- _tweetData[$file])){ $this- _tweetData[$file] = $this- readDataFile($file); } $rento_limit = 10; // n個前まで投稿を記録し、二重投稿を回避する $twit_logfile = "twit_log.txt"; //$twit_logfileは存在するか? if(!file_exists($twit_logfile)){ touch($twit_logfile) or die( ファイル作成に失敗\n ); chmod($twit_logfile, 0606) or die( 権限変更に失敗\n );//※パーミッションは鯖によって違います } $Posttweets = file_get_contents($twit_logfile); // 読み込み $p_tw = explode("\n", $Posttweets); // 配列に格納 $status = $this- _tweetData[$file][array_rand($this- _tweetData[$file])]; while(true) { if(in_array($status, $p_tw)){ //発言にあるか?無ければ抜ける //発言をランダムに一つ選ぶ $status = $this- _tweetData[$file][array_rand($this- _tweetData[$file])]; }else{ break; } //無ければ抜ける } $p_tw2[0] = $status;//投稿ログをローテート for( $i = 1; $i $rento_limit; $i++ ){ //1から$rento_limit直前まで if($p_tw[$i-1]) { $p_tw2[$i] = $p_tw[$i-1]; //古いのを送る。例:$p_tw2[1] = $p_tw[0] }else{ break; } //投稿が少ない時は抜ける } $p_tw_output = join("\n",$p_tw2); //配列結合 $fp = fopen( twit_log.txt , w ); //ファイルオープン flock($fp, LOCK_EX); // ファイルのロック(排他制御) fwrite($fp,$p_tw_output); //ファイル書き込み fclose($fp); //ファイルクローズ return $status; //違う文を戻り値として返す } を追記する。 //ランダムにポスト function postRandom($datafile = "data.txt"){ $status = $this- makeTweet($datafile); の $status = $this- makeTweet($datafile); を $status = $this- rento_check($datafile); へ変更する。 空のtwit_log.txtを作成し、アップロードする。※ログファイル用のパーミッションに。 ※なくても自動作成するように記述はしてありますが、動かない場合もありますので自分で作成してうpするのが確実 コメント [#u24d7adf] ランダムPOSTで発言を重複させない様にする を書き込みましたが。重複するエラーが出ます。また、5回連続でランダムポストを繰り返すにはどうしたらいいですか。 -- 安井一博 (2011-01-15 20 41 51) 複数ファイルから、ランダムに1行を抜き出し、ひとつの発言として結合させてポストするにはどうすれば良いのでしょうか。 -- 小林一郎 (2011-03-04 11 47 01) 日付ではなく、曜日で発言内容の変更(特定ファイルの読み込み)は可能でしょうか -- 坂井 (2011-04-13 06 10 44) ↑ 可能 -- 名無しさん (2011-04-17 18 40 38) 人格を作って、なおかつifを使って定期的に呟かせるにはどう調節すれば可能でしょうか? -- 名無し (2013-01-14 00 18 12) このページの内容は2.1版でも特に修正無しに使えますか? -- 名無しさん (2013-02-05 14 29 08) ランダム発言を重複しないようにする、はダメでした -- 名無しさん (2013-02-17 17 54 05) ↑ごめん、大嘘ついた。 ランダム発言重複回避はそのまま使えました -- 名無しさん (2013-02-17 18 05 30) ランダム重複回避は、改行が含まれてると俺の環境ではダメだった -- 名無しさん (2014-02-03 00 39 36) 名前 コメント
https://w.atwiki.jp/easybotter_wiki/pages/17.html
PHPへ手を付ける前に PHPへ着手するにあたって自宅サーバー上でテストしてみる 段差を付けよう! PHPへ手を付ける前に 正規表現(メタ文字) 演算子 比較演算子 条件分岐(if、switch) date関数 以上の知識があるとここで紹介している機能の他、色々な改造が出来るようになります。 興味がある方はPHPを勉強してみるのもいいかもしれません。 Twitter Bot関連リンクでPHP解説サイトを紹介していますので、そちらを参考に。 data関数はPHPマニュアルに簡易リストがあります。 PHPへ着手するにあたって まずはbot.phpに書かれている説明と公式サイトの"基本の設定"解説を熟読しましょう。 設置手順 前準備~設置編でも紹介したように、PHP対応のテキストエディタを使用しよう。~~構文チェック機能付きが望ましいです。 自宅サーバー上でテストしてみる EasyBotter.phpやbot.phpを編集する前に、自宅サーバー上で構文テストしてみることをお勧めしたい。 easyPHP等が手軽でお勧め(skypeなど、ポート80を使用している他プログラムは終了させる。) ↓ 例:午前と午後の発言を変えたい! if(date("a") == "am"){ $response = $eb- postRandom("am.txt"); }else{ $response = $eb- postRandom("pm.txt"); } とbot.phpへ記述したい。 bot.phpを編集する前に、自宅サーバー上に適当なphpファイル(例:test.php)を作って ?php if(date("a") == "am"){ echo "午前ですよ~"; }else{ echo "午後ですよ~"; } ? と記述し、保存。自宅サーバーで動かしてみる(アクセスしてみる。) 正常に機能し(コメントが表示され)ていればbot.phpへ導入させてみる! ※bot.phpを自宅サーバー上で動かすには、それなりに環境設定する必要があります。 段差を付けよう! if{}else{}沢山使っていると、何処で{}を閉じたか・閉じてないかがややこしくなってきます。 そんな時はTABキーや空白文字で段差を付けて整理しよう。 if(date("i") % 15 === 0){ if(date("H") 21){ $randOPfile = "txtlog.dat"; if(date("i") 5){ $post_randOP = rand(0,21); $fp = fopen($randOPfile, "w"); @fwrite( $fp, $post_randOP, strlen($post_randOP) ); fclose($fp); } $contents = @file_get_contents($randOPfile); }else{ $contents = date("H"); } $contents = "post_".$contents.".txt"; $response = $eb- postRotation($contents,"──"); } 何がなんだか… TABキーで整理してみよう if(date("i") % 15 === 0){ if(date("H") 21){ $randOPfile = "txtlog.dat"; if(date("i") 5){ $post_randOP = rand(0,21); $fp = fopen($randOPfile, "w"); @fwrite( $fp, $post_randOP, strlen($post_randOP) ); fclose($fp); } $contents = @file_get_contents($randOPfile); }else{ $contents = date("H"); } $contents = "post_".$contents.".txt"; $response = $eb- postRotation($contents,"──"); } 見やすくなったよね?これで記述ミスも少なくなる…はず。
https://w.atwiki.jp/easybotter_wiki/pages/23.html
PHPファイルを編集する上で、基本使いそうなPHP制御構造等はTwitter Bot関連リンクにお勧め解説サイトをリンクしています。 ※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメントを書く」から誰かに頼んで下さい。 ver.1.42でOAuth認証するにはファイルの用意 Access Tokenの取得 reply_random.phpの編集 post_random.phpの編集 from.phpの編集 備考 ver.1.42でOAuth認証するには phaさんが開放して下さっているもの(EasyBotterから)を使う場合の解説です。 ファイルの用意 PHP+OAuthでTwitterさんで配布されているoauth_test.txtとTwitter API Wiki / OAuth Examplesで配布されているver0.2.0以上のzipファイルをDLして下さい。 zipは解凍して、OAuth.phpとtwitterOAuth.phpだけ使用します。~~oauth_test.txtはoauth_test.phpへ改名して下さい。 reply_random.php等を置いている同ディレクトリ内へアップロードして下さい。 Access Tokenの取得 BOTアカウントでTwitterへログインする。 こちらのページから"OAuth認証について"をクリック。 アプリケーションを許可するか聞かれる→許可をクリック。 その後、転送されたページに表示されている Access Token/Access Token Secretの値2つをメモする。 reply_random.phpの編集 reply_random.php内 //各種設定 chdir(dirname(__FILE__)); require_once("Services/Twitter.php"); require_once( Services/Twitter/Jsphon/Error.php ); require_once("Services/Twitter/Jsphon/Decoder.php"); の直後へ require_once("twitterOAuth.php"); $consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値 $consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値 $access_token = ""; // Access Tokenの値 $access_token_secret = ""; // Access Token Secretの値 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $replydata = $to- OAuthRequest( http //twitter.com/statuses/replies.json , array(), GET ); を記入する。 ※↑に先ほど取得したAccess Token/Access Token Secretを記述する。 Consumer Key/Consumer Secretは弄らないで下さい。 その付近にある $st = new Services_Twitter($username, $password); $replydata = $st- getReplies(); を代わりに削除して下さい。 次に //投稿する $in_reply_to_status_id = $replies2[$i]["id"]; $result = $st- setUpdate(array( status = $message, in_reply_to_status_id = $in_reply_to_status_id)); を探し、まるまる //投稿する $in_reply_to_status_id = $replies2[$i]["id"]; $result = $to- OAuthRequest("https //twitter.com/statuses/update.xml",array("status"= $message, in_reply_to_status_id = $in_reply_to_status_id),"POST"); へ変更して下さい。 以上でreply_random.phpの編集は終わりです。 post_random.phpの編集 同じくpost_random.php内 //各種設定 chdir(dirname(__FILE__)); require_once("Services/Twitter.php"); require_once( Services/Twitter/Jsphon/Error.php ); require_once("Services/Twitter/Jsphon/Decoder.php"); の直後へ require_once("twitterOAuth.php"); $consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値 $consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値 $access_token = ""; // Access Tokenの値 $access_token_secret = ""; // Access Token Secretの値 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); を記入する。 その付近にある $st = new Services_Twitter($username, $password); を代わりに削除して下さい。 次に //twitterに投稿する $result = $st- setUpdate($message); を探し、まるまる //twitterに投稿する $result = $to- OAuthRequest("https //twitter.com/statuses/update.xml",array("status"= $message),"POST"); へ変更して下さい。 以上でpost_random.phpの編集は終わりです。 from.phpの編集 ファイルの中身すべてを削除し html head meta http-equiv="content-type" content="text/html; charset=utf-8" title Twitter手動投稿用フォーム /title /head body center p Twitter手動投稿用フォーム /p p 手動で何か投稿させたいときに使ってください。 /p form action="form.php" method="POST" 発言内容: br / textarea name="message" cols="20" rows="4" /textarea br / input type="submit" name="submit" value="post" / br / /form ?php if(isset($_POST["submit"])){ chdir(dirname(__FILE__)); require_once("Services/Twitter.php"); require_once( Services/Twitter/Jsphon/Error.php ); require_once("Services/Twitter/Jsphon/Decoder.php"); require_once("twitterOAuth.php"); $username = ""; //userid $consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値 $consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値 $access_token = ""; // Access Tokenの値 $access_token_secret = ""; // Access Token Secretの値 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $message = $_POST["message"]; $result = $to- OAuthRequest("https //twitter.com/statuses/update.xml",array("status"= $message),"POST"); if($result){ echo "Twitterへのpostに成功しました。 br / "; echo "@ a href= http //twitter.com/{$username} target= _blank {$username} /a に投稿したメッセージ:{$message}"; }else{ echo "Twitterへの投稿に失敗しました。パスワードやユーザー名をもう一度チェックしてみてください。 br / "; echo "ユーザー名:@ a href= http //twitter.com/{$username} target= _blank {$username} /a br / "; echo "投稿しようとしたメッセージ:{$message}"; } } ? /center /body /html と書き換えて下さい。 Access Token/Access Token Secretの記述も忘れずに! 備考 このままだと{id}や{timeline_name}と言ったものが使えなくなっています。 reply_random.phpとpost_random.php内 if(preg_match("@{.+?}@",$message) == 1){ //時間などを変換する require_once("Services/convert_text.php"); $message = convert_text($message); //id、名前を変換する //タイムラインからランダムに最近発言した人のデータを取る if(preg_match("@{timeline_id}@",$message) === 1){ $randomTweet = $st- getRandomTweet(20); $message = preg_replace("@{timeline_id}@u",$randomTweet["user"]["screen_name"],$message); } if(preg_match("@{timeline_name}@",$message) === 1){ $randomTweet = $st- getRandomTweet(20); $message = preg_replace("@{timeline_name}@u",$randomTweet["user"]["name"],$message); } //ランダムな一人のfollowerデータを取る if(preg_match("@{id}@",$message) === 1){ $randomFollowersData = $st- getRandomfollowersData(); $message = preg_replace("@{id}@u",$randomFollowersData["screen_name"],$message); } if(preg_match("@{name}@",$message) === 1){ $randomFollowersData = $st- getRandomfollowersData(); $message = preg_replace("@{name}@u",$randomFollowersData["name"],$message); } if(preg_match("@{follower_id}@",$message) === 1){ $randomFollowersData = $st- getRandomfollowersData(); $message = preg_replace("@{follower_id}@u",$randomFollowersData["screen_name"],$message); } if(preg_match("@{follower_name}@",$message) === 1){ $randomFollowersData = $st- getRandomfollowersData(); $message = preg_replace("@{follower_name}@u",$randomFollowersData["name"],$message); } //ランダムな一人のfollowingデータを取る if(preg_match("@{following_id}@",$message) === 1){ $randomFollowingsData = $st- getRandomFollowingsData(); $message = preg_replace("@{following_id}@u",$randomFollowingsData["screen_name"],$message); } if(preg_match("@{following_name}@",$message) === 1){ $randomFollowingsData = $st- getRandomFollowingsData(); $message = preg_replace("@{following_name}@u",$randomFollowingsData["name"],$message); } } をまるまる if(preg_match("@{.+?}@",$message) == 1){ //時間などを変換する require_once("Services/convert_text.php"); $message = convert_text($message); //id、名前を変換する //タイムラインからランダムに最近発言した人のデータを取る if(preg_match("@{timeline_id}@",$message) === 1){ $timeline_id_result = $to- OAuthRequest("http //twitter.com/statuses/user_timeline.xml?count=20",array(),"GET"); preg_match_all("/.*? screen_name (.+?) \/screen_name /is",$timeline_id_result,$timeline_id_kekka,PREG_SET_ORDER); $message = preg_replace("@{timeline_id}@u",$timeline_id_kekka[array_rand($timeline_id_kekka)][1],$message); } if(preg_match("@{timeline_name}@",$message) === 1){ $timeline_name_result = $to- OAuthRequest("http //twitter.com/statuses/user_timeline.xml?count=20",array(),"GET"); preg_match_all("/.*? name (.+?) \/name /is",$timeline_name_result,$timeline_name_kekka,PREG_SET_ORDER); $message = preg_replace("@{timeline_name}@u",$timeline_name_kekka[array_rand($timeline_name_kekka)][1],$message); } //ランダムな一人のfollowerデータを取る if(preg_match("@{id}@",$message) === 1){ $follower_id_result = $to- OAuthRequest("http //twitter.com/statuses/followers.xml?screen_name=",array(),"GET"); preg_match_all("/.*? screen_name (.+?) \/screen_name /is",$follower_id_result,$follower_id_kekka,PREG_SET_ORDER); $message = preg_replace("@{id}@u",$follower_id_kekka[array_rand($follower_id_kekka)][1],$message); } if(preg_match("@{name}@",$message) === 1){ $follower_name_result = $to- OAuthRequest("http //twitter.com/statuses/followers.xml?screen_name=",array(),"GET"); preg_match_all("/.*? name (.+?) \/name /is",$follower_name_result,$follower_name_kekka,PREG_SET_ORDER); $message = preg_replace("@{name}@u",$follower_name_kekka[array_rand($follower_name_kekka)][1],$message); } if(preg_match("@{follower_id}@",$message) === 1){ $follower_id_result = $to- OAuthRequest("http //twitter.com/statuses/followers.xml?screen_name=",array(),"GET"); preg_match_all("/.*? screen_name (.+?) \/screen_name /is",$follower_id_result,$follower_id_kekka,PREG_SET_ORDER); $message = preg_replace("@{follower_id}@u",$follower_id_kekka[array_rand($follower_id_kekka)][1],$message); } if(preg_match("@{follower_name}@",$message) === 1){ $follower_name_result = $to- OAuthRequest("http //twitter.com/statuses/followers.xml?screen_name=",array(),"GET"); preg_match_all("/.*? name (.+?) \/name /is",$follower_name_result,$follower_name_kekka,PREG_SET_ORDER); $message = preg_replace("@{follower_name}@u",$follower_name_kekka[array_rand($follower_name_kekka)][1],$message); } //ランダムな一人のfollowingデータを取る if(preg_match("@{following_id}@",$message) === 1){ $friends_id_result = $to- OAuthRequest("http //twitter.com/statuses/friends.xml?screen_name=",array(),"GET"); preg_match_all("/.*? screen_name (.+?) \/screen_name /is",$friends_id_result,$friends_id_kekka,PREG_SET_ORDER); $message = preg_replace("@{following_id}@u",$friends_id_kekka[array_rand($friends_id_kekka)][1],$message); } if(preg_match("@{following_name}@",$message) === 1){ $friends_name_result = $to- OAuthRequest("http //twitter.com/statuses/friends.xml?screen_name=",array(),"GET"); preg_match_all("/.*? name (.+?) \/name /is",$friends_name_result,$friends_name_kekka,PREG_SET_ORDER); $message = preg_replace("@{following_name}@u",$friends_name_kekka[array_rand($friends_name_kekka)][1],$message); } } へ書き換えて下さい。 これでOAuth認証への切り替えは終了です。お疲れ様でした。テストしてみましょう。 なお"EasyBotterから"の部分を変更したい場合はver.2.0のやり方と変わりませんので、wiki内をみて下さい。
https://w.atwiki.jp/easybotter_wiki/pages/15.html
質問スレで質問する前に読むこと! 56と 161引用 初心者スレ利用者は以下のテンプレを使用してください。 【バージョン】 【設置鯖名】 レン鯖名/自宅鯖 【PHPのバージョン】 【実行】 CRON鯖名/ブラウザ自動更新/手動/他 【手動】 動く/動かない 【不明点など】 (エラーメッセージがあればコピペ推奨) また、思いつく単語をこのスレと関連スレで検索してください。 リプライ:リプ、@、replyなどで検索 タイムライン:TL、タイムラインなどで検索 CRON:CRON、bot.phpなどで検索 二重投稿:二重投稿、if、bot.phpなどで検索 リプライと同時に他のポストをする:bot.php、ifなどで検索 via~変更:http //twitter.com/oauth_clients スクリプト初体験の方は、PHPリファレンスで最低限の勉強 正規表現(メタ文字) 演算子 比較演算子 条件分岐(if、switch) date関数 ここまで
https://w.atwiki.jp/easybotter_wiki/pages/30.html
時間作動をローカルチェックしたい人向け(簡易) ソースはTwitter Bot BBSから 1.下記のような構成のPHPファイルを作る。 2.そのファイルをPHPが使えるサーバーにアップさせる。 3.そのPHPファイルにアクセスする (エラーがある場合は、エラーログが出る) ●メインファイル html lang=ja head title PHP動作チェック用 /title body h3 動作チェック /h3 ?php require("読み出しファイル名"); ? hr /body /html 上記を適当な名前を付けて拡張子.php(PHPファイル)で保存する。 ●読み出しファイル(例) ?php if(date("G") 23 || date("G") 6){ echo "24時~5時に表示されるよ"; } elseif(date("G") 17 || date("G") 0){ echo "18時~23時に表示されるよ"; } elseif(date("G") 11 date("G") 18){ echo "12時~17時に表示されるよ"; } else{ echo "6時~11時に表示されるよ"; } ? こちらも同様に適当な名前を付けて拡張子.php(PHPファイル)で保存する。 直接メインファイルに書いても効果があるが、別ファイルにしておく事で 書き換えたい場合、こちらのファイルを書き直すだけで済む。 読み出しファイルなので必要に同じ書き換えてください。 リプライパターンファイルの簡易チェック 上記のメインファイルをreply_pattern.phpと同じディレクトリに入れるかディレクトリを参照させる。 上記のメインファイルの ?php require("読み出しファイル名"); ? とあるところを ?php require("reply_pattern.php"); print_r($data); ? と書き換える。 または 同時に調べたい場合は hr の下に付け加える h3 リプライパターン定義チェック /h3 ?php require("reply_pattern.php"); print_r($data); ? hr 結果の表示は、しっかりと定義されたかどうか。 { } , " の過不足など、エラーチェックができる。 ただし、正規表現は対象外。
https://w.atwiki.jp/twitterbb/pages/135.html
アバターbot キャラクターbot 機体bot 情報bot その他bot 人力bot アバターbot まじめちゃん まじめアバターのbot。TLやリプライ反応あり。作者アリアダスト ナルシー ナルシーアバターのbot。TLやリプライ反応あり。かなりアクティブ。管理人コウ・クロダ ゴードン ベテランアバターのbot。ランダムリプライあり。作者不明 ベテランボーダー ベテランアバターのbot2。リプライなし。制作@kangetsukizuna レオ 熱血アバターのbot。ランダムリプライあり。作者不明 クール クールアバターのbot。リプライ反応あり。制作@fctokyo1016 キャラクターbot オペ子 マグメルオペ子。フォローして「ボダブレなう」と発言すると拡散してくれる。作者不明 オペ子 マグメルオペ子その2。作者はbbbの人 チヒロ EUSTオペ子のbot。TLやリプライ反応あり。作者は@kaihaku92 グラント メカニックのグラントのbot。武器機体パーツのスペックを喋る。飼い主@hibiki_BB 機体bot 謙虚な重火力 ガチムチさん ガチムチ重火力ブラストの擬人化bot。リプライに反応 飼い主レッド@つボ部 久我さん ボーダーブレイク「クーガー型」のBOTです。1型[ 凸]は割と普通。2型[b凸]はちょっとサニーパンチ。飼い主は@palabellum ケーファー(ベンノ製) ボーダーブレイクのパーツのブランドのひとつである「ケーファー」のbot。飼い主はシャルロット シュライクbot(しゅらたん) ボーダーブレイクに登場する機体パーツブランド「シュライク」の擬人化botです。置いてる鯖の関係か時々リプライに反応しないかも、するかも。飼い主は@aorenjar ツェーブラさん 産廃ボーダーブレイク機体ブランド『ツェーブラ』の擬人化botです。リプライ、TL反応あり。飼い主→@heidenfurst 情報bot ドットネットちゃん 公式のTwitterアカウント。主に公式情報を流してくれるが結構フリーダム。口癖は○○ボダ~。 ボーダーブレイク 公式のものではないらしいが、公式情報を流してくれる。 ボーダーブレイク 攻略情報 ついったーボダ部-活動記録 『ついったーボダ部』のタグがついた動画がUPされると報告するBOTです。 その他bot ボーダーブレイク ポイントbot スコア評価(「貢献+4pt」のような)や勲章を定期的に授与するbot。たまに人が中にいる。 管理たいよう 人力bot botってなんでしょうね? かゆ 榴弾bot ろんだ 中量FAM強グレbot 人見 ボダアイドルbot ボットネットちゃん ドットネットちゃんの偽物。どう見ても@はほぼ全部人力です。本当に(ry あと中身は人m(削除
https://w.atwiki.jp/easybotter_wiki/pages/32.html
?php $screen_name = ""; //botのid名 $consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値 $consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値 $access_token = ""; // Access Tokenの値 $access_token_secret = ""; // Access Token Secretの値 $replyLoopLimit = 3; //リプライのループを防ぐための設定です。大体3回くらいで会話が止まります(多分……) $footer = ""; //ここにフッターを設定すると発言するときいつも末尾に追加されます $dataSeparator = "\n"; //data.txtの区切り文字です。改行が無視されるときはここに,(コンマ)などを設定してそれで区切ってください ?
https://w.atwiki.jp/easybotter_wiki/pages/2.html
トップページ Read me 質問する前に 注意事項 ver.2.1版 機能追加ID別設定 乗っ取り対策 地震で自動停止させる ver.2.0beta版 設置手順前準備~設置編 最新のAPIに変更 手動実行編 エラー解決編 脱初心者編 機能追加時間分け 時間分けマスターになる為に reply replyTimeline postRandom postRotation ID別設定 よくある質問設定 OAuth関連 エラーは出ないのに… PHPエラー おまけ簡易ローカルチェック 不具合一覧 ver.1.42版 よくある質問OAuth関連 機能追加 脱初心者出来たら! その他Twitter Bot関連リンク Twitter Bot BBS(外部サイト) 更新履歴 取得中です。 ここを編集
https://w.atwiki.jp/bluesanith/pages/13.html
Twitter ラティオスbot取扱説明書 最終更新日 2013/02/03 15 27 31 (Sun) アクセスカウンター トータル: - 今日: - 昨日: - TwitterID @Latios_bot 名称(Name) ラティオス 現在地(Location) アルトマーレ Web http //www26.atwiki.jp/bluesanith/pages/13.html 自己紹介(Bio) ポケモンシリーズに登場する,水の都の蒼い護神-ラティオスのbot(非公式/ver.0.5.0)です. 優しく,気の利くお利口さんと恥ずかしがりさんの面も兼ね備えております. 妹のラティアスも合わせてフォローすると尚楽しめます:@Latias_bot 逃がしたいときは,ブロックでお願いします. 製作者・お世話係:@iSnivy_lc4 アイコン・壁紙製作:@iWolferirPt7 様 #twitter_badge お世話係によるプログラム面の解説・説明(ただし,BASIC認証) 水の都の紅き守護神-ラティアスbot Bio ポケモンシリーズに登場する,水の都の蒼い護神-ラティオスのbot(非公式/ver.0.5.0)です. 優しく,気の利くお利口さんと恥ずかしがりさんの面も兼ね備えております. 妹のラティアスも合わせてフォローすると尚楽しめます:@Latias_bot 逃がしたいときは,ブロックでお願いします. 製作者・お世話係:@iSnivy_lc4 アイコン・壁紙製作:@iWolferirPt7 様 About このページは,Twitter上で動く『ラティオスbot』の仕様説明をするページです. なお,このラティオスは,映画『劇場版ポケットモンスター 水の都の護神 ラティアスとラティオス』・ ゲーム『ポケットモンスター ハートゴールド・ソウルシルバー』に準拠しております. Operation Post このラティオスbotは,EasyBotterを利用して動かしております. bot製作にあたり,情報提供をしていただいた@pha さんに感謝いたします. 通常ツイート ラティオスbotは20分おきに, 映画『劇場版ポケットモンスター 水の都の護神 ラティアスとラティオス』の舞台であるアルトマーレの描写をポストします. ゲーム『ポケットモンスター ハートゴールド・ソウルシルバー』内で連れ歩いている時のしぐさをポストします. マンガ『ポケットモンスターSPECIAL』エメラルド編でラティアスとラティオスがテレパシーで話すところを一部修正したものをポストします. 最終更新日現在,158パターンあります. ゲーム『ポケットモンスター』シリーズにおけるポケモン図鑑でのラティオスの説明をポストします. ポケットモンスターにおける様々な最新情報をポストします. 今後,実装していく予定です. また,2分おきにリプライチェックをします. 連携 2011年3月1日,ラティオスbot ver.0.4.4のリリースにつきまして,ラティアスbotと連携・連動を組ませていただきました. 起床シーン・ランチシーン・ディナーシーン・添い寝シーンの4つ組んでおります. ラティアスbotの製作者・お世話係のフェリルさん(@iWolferirPt7)と雑談もしつつ,連携の会議に約8時間くらい費やしました(笑) 2013年2月1日,ラティオスbot ver.0.5.0のリリースにつきまして,ラティアスbotと連携の見直しと連動を組ませていただきました. お出かけシーンを組んでおります. アルトマーレのモチーフとなったイタリア・ベネチアであることから, ヨーロッパがモチーフとなった映画の舞台にお出かけに行っております. Game 注意:ゲームを何度も続けたいときは,一度ラティオスbotからのリプライが返ってきてからでお願いします. 1.ラティオスくじ ラティアスbot・レシラムbot等に搭載されているのと同じくじ機能です. 『ラティくじ』・『占って』という単語を含んだリプライを送ると,大吉・吉・中吉・小吉・凶から運勢が選ばれます. 2.ラティオス救出ゲーム ラティオスbot宛に,ポケモンのあるわざを出すと,そのわざに対応したリプライが返ってくるようです.ヒントは救出です. 3.ラティオス捕獲ゲーム ラティオスbot宛に,以下のポケモンに出てくるボールを投げると,判定リプライが返ってくるようです. 対応しているボールと捕獲確率を載せておきます. 捕獲率:モンスターボール(10%)・スーパーボール(15%)・ハイパーボール(20%)・マスターボール(50%) 4.教えて! ラティオス! ラティオスbot宛に,[教えて]や[知りたい]等とポストをすると,ラティオスが知っていることを何か教えてくれるようです. 次に,『』にあるわざやどうぐをポストすると,ラティオスが何か反応してくれるようです. 2.ラティオス救出ゲームと連携しています. Follow スパム対策のため,フォローは手動で行います.フォロー・リムーブはお気軽にどうぞ. このラティオスから逃がしたいときは,リムーブではなく,ブロックでお願いいたします. Message もし,お世話係宛に意見・質問・要望・感想がある方は, Twitterのダイレクトメッセージ または latios.bot★gmail.com(お手数ですが,★は@に変えてください)にメールを送ってください. できる限り,迅速に対応したいと思っております. botへのリプライやリツイートでは対応ができませんので,注意をしてください. Special Thanks ラティオスbot製作協力:@hayato240 様 ラティオスbotアイコン・壁紙製作:@iWolferirPt7 様 情報提供:@ichiroichie 様(ルギアbot・ホウオウbot製作者)・@pikoyasaka 様(シェイミbot製作者)・@Xenonno358 様・@pha 様 参考:@hayato240 のはてなダイアリー・@hitode909 のはてなダイアリー・@syo00 のはてなダイアリー・ EasyBotter-プログラミングがプログラミングができなくても作れるTwitter botの作り方